package com.summer.framework.redis.script;

import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.core.script.RedisScript;

/**
 * Description:
 * @auther Ice Yang
 * Date 2025/9/12 14:26
 */
public class ScriptConstant {

    private static final String LIST_LUA_SCRIPT_SET = """
            redis.call('DEL', KEYS[1])           -- 首先删除键
            if #ARGV > 0 then                   -- 检查是否有参数（新值）
               redis.call('RPUSH', KEYS[1], unpack(ARGV)) -- 使用所有参数重新创建列表
            end
            return true                         -- 返回成功
            """;

    private static final String SET_LUA_SCRIPT_SET = """
            redis.call('DEL', KEYS[1])           -- 删除现有键
            if #ARGV > 0 then                   -- 检查是否有参数（新成员）
                redis.call('SADD', KEYS[1], unpack(ARGV)) -- 使用所有参数创建新Set
            end
            return true                         -- 返回成功
            """;

    public static final RedisScript<Boolean> LIST_SET_SCRIPT = new DefaultRedisScript<>(LIST_LUA_SCRIPT_SET, Boolean.class);

    public static final RedisScript<Boolean> SET_SET_SCRIPT = new DefaultRedisScript<>(SET_LUA_SCRIPT_SET, Boolean.class);
}
